package com.rslai.commons.util.excel;

import java.util.Arrays;

/**
 * Created by rslai on 2016/5/9.
 */
public class Head {
    private int index; // 字段索引，从0开始
    private String name; // 字段名
    private int width; // 单元格宽度
    private int charWidth = 256;
    private String[] options; // 下拉框选择项
    private boolean wrapText; // 是否自动换行

    /**
     * 构造函数
     */
    public Head() {

    }

    /**
     * 构造函数
     * @param index 字段索引，从0开始
     * @param name 字段名
     * @param width 单元格宽度（英文字符数），0为默认宽度
     */
    public Head(int index, String name, int width) {
        init(index, name, width, null, false);
    }

    /**
     * 构造函数
     * @param index 字段索引，从0开始
     * @param name 字段名
     * @param width 单元格宽度（英文字符数），0为默认宽度
     * @param options 下拉框选择项，null为没有下拉框
     */
    public Head(int index, String name, int width, String[] options) {
        init(index, name, width, options, false);
    }

    /**
     * 构造函数
     * @param index 字段索引，从0开始
     * @param name 字段名
     * @param width 单元格宽度（英文字符数），0为默认宽度
     * @param options 下拉框选择项，null为没有下拉框
     * @param wrapped 是否自动换行
     */
    public Head(int index, String name, int width, String[] options, boolean wrapped) {
        init(index, name, width, options, wrapped);
    }

    /**
     * 初始化
     * @param index 字段索引，从0开始
     * @param name 字段名
     * @param width 单元格宽度（英文字符数），0为默认宽度
     * @param options 下拉框选择项，null为没有下拉框
     * @param wrapped 是否自动换行
     */
    private void init(int index, String name, int width, String[] options, boolean wrapped) {
        this.index = index;
        this.name = name;
        this.width = width * charWidth;
        this.options = options;
        this.wrapText = wrapped;
    }

    /**
     * 取得字段索引，从0开始
     * @return 索引号
     */
    public int getIndex() {
        return index;
    }

    /**
     * 设置字段索引，从0开始
     * @param index 索引号
     */
    public void setIndex(int index) {
        this.index = index;
    }

    /**
     * 取得字段名
     * @return 字段名
     */
    public String getName() {
        return name;
    }

    /**
     * 设置字段名
     * @param name 字段名
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 取得单元格宽度
     * @return 单元格宽度
     */
    public int getWidth() {
        return width;
    }

    /**
     * 设置单元格宽度
     * @param width 单元格宽度（英文字符数）
     */
    public void setWidth(int width) {
        this.width = width * charWidth;
    }

    /**
     * 取得下拉框选择项
     * @return 下拉框选择项
     */
    public String[] getOptions() {
        return options;
    }

    /**
     * 设置下拉框选择项
     * @param options 下拉框选择项
     */
    public void setOptions(String[] options) {
        this.options = options;
    }

    /**
     * 返回文本是否自动换行
     * @return
     */
    public boolean isWrapText() {
        return wrapText;
    }

    /**
     * 设置文本是否自动换行
     * @param wrapped true: 换行，false: 不换行
     */
    public void setWrapText(boolean wrapped) {
        this.wrapText = wrapped;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Head{");
        sb.append("index=").append(index);
        sb.append(", name='").append(name).append('\'');
        sb.append(", width=").append(width);
        sb.append(", options=").append(Arrays.toString(options));
        sb.append(", wrapText=").append(wrapText);
        sb.append('}');
        return sb.toString();
    }
}
